package com.ssy.lingxi.member.merchant.service.feign;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.MemberFeignRelationVO;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.MemberFeignSubordinateMemberVO;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.MemberFeignUserIdVO;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.response.*;

import java.util.List;

/**
 * 会员、用户信息相关内部Feign服务接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-06-03
 */
public interface IMemberDetailFeignService {

    /**
     * 查询用户Web端菜单权限Url列表
     * @param userId 用户Id
     * @return 查询结果
     */
    Wrapper<List<String>> getUserWebAuthUrls(Long userId);

    /**
     * 根据会员id查询用户
     * @param memberIds 会员id
     * @return 查询结果
     */
    Wrapper<List<MemberFeignMsgByMemberIdVO>> getUserByMemberIds(List<Long> memberIds);

    /**
     * 根据角色id查询用户
     * @param roleIds 角色id
     * @return 查询结果
     */
    Wrapper<List<MemberFeignMsgByRoleIdVO>> getUserByRoleIds(List<Long> roleIds);

    /**
     * 结算能力 - 查询入库分类信息中，主营品类及结算方式
     * @param relationVO 接口参数
     * @return 查询结果，如无配置返回空列表
     */
    Wrapper<List<MemberCategoryFeignVO>> findMemberBusinessCategories(MemberFeignRelationVO relationVO);

    /**
     * 根据用户Id查询用户信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberFeignUserDetailVO> findMemberUser(MemberFeignUserIdVO idVO);

    /**
     * 根据会员id和角色id，查询会员角色为服务提供者的下级会员列表
     * @param memberVO 上级会员信息
     * @return 查询结果
     */
    Wrapper<List<MemberManageQueryVO>> subordinateMemberList(MemberFeignSubordinateMemberVO memberVO);
}
